{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>发生时间</th>\n",
       "      <th>开关机状态</th>\n",
       "      <th>加热中</th>\n",
       "      <th>保温中</th>\n",
       "      <th>实际温度</th>\n",
       "      <th>热水量</th>\n",
       "      <th>水流量</th>\n",
       "      <th>加热剩余时间</th>\n",
       "      <th>当前设置温度</th>\n",
       "      <th>用水停顿时间间隔</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2014-10-19 07:01:56</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>30°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>8</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56</th>\n",
       "      <td>2014-10-19 07:38:16</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>30°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>8</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>36.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>381</th>\n",
       "      <td>2014-10-19 09:46:38</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>29°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>16</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>128.366667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>382</th>\n",
       "      <td>2014-10-19 09:46:40</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>29°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>13</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>0.033333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>384</th>\n",
       "      <td>2014-10-19 09:47:15</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>29°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>20</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>0.583333</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   发生时间 开关机状态 加热中 保温中  实际温度 热水量  水流量 加热剩余时间 当前设置温度    用水停顿时间间隔\n",
       "2   2014-10-19 07:01:56     关   关   关  30°C  0%    8    0分钟   50°C    0.000000\n",
       "56  2014-10-19 07:38:16     关   关   关  30°C  0%    8    0分钟   50°C   36.333333\n",
       "381 2014-10-19 09:46:38     关   关   关  29°C  0%   16    0分钟   50°C  128.366667\n",
       "382 2014-10-19 09:46:40     关   关   关  29°C  0%   13    0分钟   50°C    0.033333\n",
       "384 2014-10-19 09:47:15     关   关   关  29°C  0%   20    0分钟   50°C    0.583333"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# data_exchange_divideEvent.py\n",
    "# 一次完整用水事件的划分模型\n",
    "# 方法：判断流量大于0的记录的时间差是否超过阈值，是，则是两次事件，否，则是一次事件\n",
    "# -*- utf-8 -*-\n",
    "# 第一步：探索划分一次完整用水事件的时间间隔阈值\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from pandas import DataFrame\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rc('figure',figsize=(9,6))\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号\n",
    "\n",
    "inputfile = 'data_guiyue.xlsx'\n",
    "outputfile ='dataExchange_divideEvent.xlsx'\n",
    "\n",
    "\n",
    "data = pd.read_excel(inputfile)\n",
    "\n",
    "data[u'发生时间'] = pd.to_datetime(data[u'发生时间'], format = '%Y%m%d%H%M%S')#（***）\n",
    "data = data[data[u'水流量'] > 0] # 只要流量大于0的记录\n",
    "# print len(data) #7679\n",
    "\n",
    "data[u'用水停顿时间间隔']= data[u'发生时间'].diff()/ np.timedelta64(1, 'm') #将datetime64[ns]转成 以分钟为单位（*****）\n",
    "data= data.fillna(0)# 替换掉data[u'用水停顿时间间隔']的第一个空值\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>最小值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>空值数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>水流量</th>\n",
       "      <td>8.0</td>\n",
       "      <td>77.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>用水停顿时间间隔</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2093.366667</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          最小值          最大值  空值数\n",
       "水流量       8.0    77.000000  0.0\n",
       "用水停顿时间间隔  0.0  2093.366667  0.0"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#-----第*2*步-----数据探索，查看各数值列的最大最小和空值情况\n",
    "data_explore = data.describe().T\n",
    "data_explore['null'] = len(data)-data_explore['count']\n",
    "explore = data_explore[['min','max','null']]\n",
    "explore.columns = [u'最小值',u'最大值',u'空值数']\n",
    "explore\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>num</th>\n",
       "      <th>fn</th>\n",
       "      <th>cumfn</th>\n",
       "      <th>f</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>[0.0, 0.1)</th>\n",
       "      <td>5585</td>\n",
       "      <td>0.725702</td>\n",
       "      <td>0.725702</td>\n",
       "      <td>72.57%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[0.1, 0.2)</th>\n",
       "      <td>1391</td>\n",
       "      <td>0.180743</td>\n",
       "      <td>0.906445</td>\n",
       "      <td>18.07%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[0.2, 0.3)</th>\n",
       "      <td>329</td>\n",
       "      <td>0.042749</td>\n",
       "      <td>0.949194</td>\n",
       "      <td>4.27%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[0.3, 0.5)</th>\n",
       "      <td>117</td>\n",
       "      <td>0.015203</td>\n",
       "      <td>0.964397</td>\n",
       "      <td>1.52%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[0.5, 1.0)</th>\n",
       "      <td>43</td>\n",
       "      <td>0.005587</td>\n",
       "      <td>0.969984</td>\n",
       "      <td>0.56%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[1.0, 2.0)</th>\n",
       "      <td>31</td>\n",
       "      <td>0.004028</td>\n",
       "      <td>0.974012</td>\n",
       "      <td>0.40%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[2.0, 3.0)</th>\n",
       "      <td>15</td>\n",
       "      <td>0.001949</td>\n",
       "      <td>0.975962</td>\n",
       "      <td>0.19%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[3.0, 4.0)</th>\n",
       "      <td>14</td>\n",
       "      <td>0.001819</td>\n",
       "      <td>0.977781</td>\n",
       "      <td>0.18%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[4.0, 5.0)</th>\n",
       "      <td>1</td>\n",
       "      <td>0.000130</td>\n",
       "      <td>0.977911</td>\n",
       "      <td>0.01%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[5.0, 6.0)</th>\n",
       "      <td>8</td>\n",
       "      <td>0.001040</td>\n",
       "      <td>0.978950</td>\n",
       "      <td>0.10%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[6.0, 7.0)</th>\n",
       "      <td>5</td>\n",
       "      <td>0.000650</td>\n",
       "      <td>0.979600</td>\n",
       "      <td>0.06%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[7.0, 8.0)</th>\n",
       "      <td>5</td>\n",
       "      <td>0.000650</td>\n",
       "      <td>0.980249</td>\n",
       "      <td>0.06%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[8.0, 9.0)</th>\n",
       "      <td>4</td>\n",
       "      <td>0.000520</td>\n",
       "      <td>0.980769</td>\n",
       "      <td>0.05%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[9.0, 10.0)</th>\n",
       "      <td>5</td>\n",
       "      <td>0.000650</td>\n",
       "      <td>0.981419</td>\n",
       "      <td>0.06%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[10.0, 11.0)</th>\n",
       "      <td>2</td>\n",
       "      <td>0.000260</td>\n",
       "      <td>0.981679</td>\n",
       "      <td>0.03%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[11.0, 12.0)</th>\n",
       "      <td>7</td>\n",
       "      <td>0.000910</td>\n",
       "      <td>0.982588</td>\n",
       "      <td>0.09%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[12.0, 13.0)</th>\n",
       "      <td>1</td>\n",
       "      <td>0.000130</td>\n",
       "      <td>0.982718</td>\n",
       "      <td>0.01%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>[13.0, 2100.0)</th>\n",
       "      <td>133</td>\n",
       "      <td>0.017282</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.73%</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 num        fn     cumfn       f\n",
       "[0.0, 0.1)      5585  0.725702  0.725702  72.57%\n",
       "[0.1, 0.2)      1391  0.180743  0.906445  18.07%\n",
       "[0.2, 0.3)       329  0.042749  0.949194   4.27%\n",
       "[0.3, 0.5)       117  0.015203  0.964397   1.52%\n",
       "[0.5, 1.0)        43  0.005587  0.969984   0.56%\n",
       "[1.0, 2.0)        31  0.004028  0.974012   0.40%\n",
       "[2.0, 3.0)        15  0.001949  0.975962   0.19%\n",
       "[3.0, 4.0)        14  0.001819  0.977781   0.18%\n",
       "[4.0, 5.0)         1  0.000130  0.977911   0.01%\n",
       "[5.0, 6.0)         8  0.001040  0.978950   0.10%\n",
       "[6.0, 7.0)         5  0.000650  0.979600   0.06%\n",
       "[7.0, 8.0)         5  0.000650  0.980249   0.06%\n",
       "[8.0, 9.0)         4  0.000520  0.980769   0.05%\n",
       "[9.0, 10.0)        5  0.000650  0.981419   0.06%\n",
       "[10.0, 11.0)       2  0.000260  0.981679   0.03%\n",
       "[11.0, 12.0)       7  0.000910  0.982588   0.09%\n",
       "[12.0, 13.0)       1  0.000130  0.982718   0.01%\n",
       "[13.0, 2100.0)   133  0.017282  1.000000   1.73%"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#        最小值   最大值   空值 \n",
    "# 水流量   8.0  77.000000 0.0\n",
    "# 用水停顿时间间隔0.0 2093.366667 0.0\n",
    "\n",
    "#----第*3*步-----离散化与面元划分\n",
    "# 将时间间隔列数据划分为0~0.1，0.1~0.2，0.2~0.3....13以上，由数据描述可知，\n",
    "# data[u'用水停顿时间间隔']的最大值约为2094，因此取上限2100\n",
    "Ti = list(data[u'用水停顿时间间隔'])#将要面元化的数据转成一维的列表\n",
    "timegaplist = [0.0,0.1,0.2,0.3,0.5,1,2,3,4,5,6,7,8,9,10,11,12,13,2100]# 确定划分区间\n",
    "\n",
    "cats = pd.cut(Ti,timegaplist,right=False) # 包扩区间左端,类似\"[0,0.1)\",（默认为包含区间右端）\n",
    "x = pd.value_counts(cats)\n",
    "x.sort_index(inplace = True)\n",
    "dx = DataFrame(x,columns=['num'])\n",
    "dx['fn'] = dx['num']/sum(dx['num'])\n",
    "dx['cumfn'] = dx['num'].cumsum()/sum(dx['num'])\n",
    "\n",
    "f1 = lambda x :'%.2f%%' %  (x*100)\n",
    "dx[['f']]= dx[['fn']].applymap(f1)\n",
    "dx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nOxEREekceRGexux8NSwoPImIiEiG5Xx46r3/TYbu+Sf06AGjR2e7OiIiIpLncj48jY0NFj/+eCgs\nzG5lREREJO/lfnjSNAUiIiLSiXI+PI3ZpfFOIiIi0nlyPjy9daedpikQERGRTpAH4UkTZIqIiEjn\nye3w5M4YhScRERHpRDkdno55Yxel++vZ1asU3va2bFdHREREuoGcDk/HReOd1g8YmuWaiIiISHeR\n0+EpNrP4ugHDs1wTERER6S5yOjzF7rRbN2BYlmsiIiIi3UWOh6cwWFzhSURERDpLjocntTyJiIhI\n58rZ8NSj8QAjXt9GE8aG/howLiIiIp0jZ8PTyNe3UuRNbDlqEA1FPbNdHREREekmcjY8abyTiIiI\nZEPOhqcxCk8iIiKSBTkbnmItT69ojicRERHpRDkcnmKzi6vlSURERDpPDocndduJiIhI58vJ8NTv\nzb28bd9u9vUoZmvpwGxXR0RERLqRjIUnM5tnZk+Z2exWygw2syXtPXas1am2/1DccjL/iYiISI7K\nSPIws4uAQnc/ExhqZuOSlOkP/Bzo297jN88srsHiIiIi0rky1WwzHVgQLT8JVCYp0whcAtS19+Bj\ndr4KwCsa7yQiIpK32urFMrOrzGxh9HrezB40syIz2xi3/eR01ytT4akvsCVargMGJxZw9zp3393a\nQcxspplVm1m1NzW+tV3PtBMREclvqfRiufsD7j7d3acDS4AfA2/n/7d33uF2VFX//6zkJjc9pEAC\nAU0CQamB0ESQJkXaqyhdig0UX+ygiOX9qSiIigUEBYGX7kuTJkV6DSWAAQKGLiGQQCASWvr398fa\nk0wu9yY3YebMPeesz/PkuefMTOa71559ZtbsvfbacFG2XdKjRZetpegTJt4CeqfP/VhBJ03S6cDp\nAAMHD9F3NpgPwPrnuvP00c2Gs9aa83l2lrFw4ULuuOMOAFpaWth666156KGHmDXLO7Y23XRTpk+f\nzpQpUwAYM2YMra2tZOec/Ibxjxe78bX13El7e77xpye6c+iYBQztJQDOnNydcUPFxkMWAvDyyy/T\nvXt3Hn/8cQCGDx/OqFGjGD9+PAC9e/dmiy224L777uPdd98FYMstt+S5555j2rRpAKy77rosWLCA\nyZMnAzBixAhWX3117rvvPq+8fv3YdNNNGT9+PHPmzAFg66235sknn+SVV17x+lh/febMmcNTTz0F\n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\nQRAEQbAc/H8hZr+NQkJrKAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x9f00c88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#-----第*4*步-----画用水停顿时间间隔频率分布直方图\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(1,1,1)\n",
    "\n",
    "dx['fn'].plot(kind='bar')\n",
    "plt.ylabel(u'频率/组距')\n",
    "plt.xlabel(u'时间间隔（分钟）')\n",
    "p = 1.0*dx['fn'].cumsum()/dx['fn'].sum()# 数值等于 dx['cumfn']，但类型是列表\n",
    "dx['cumfn'].plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2)\n",
    "plt.annotate(format((p[4]), '.4%'), xy = (7, p[4]), xytext=(7*0.9, p[4]*0.95), arrowprops=dict(arrowstyle=\"->\", connectionstyle=\"arc3,rad=.2\")) #添加注释，即85%处的标记。这里包括了指定箭头样式。\n",
    "plt.ylabel(u'累计频率')\n",
    "\n",
    "plt.title(u'用水停顿时间间隔频率分布直方图')\n",
    "plt.grid(axis='y',linestyle='--')\n",
    "\n",
    "# fig.autofmt_xdate() #自动根据标签长度进行旋转\n",
    "for label in ax.xaxis.get_ticklabels():   #此语句完成功能同上,但是可以自定义旋转角度\n",
    "       label.set_rotation(60)\n",
    "\n",
    "plt.savefig('Water-pause-times.jpg')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#-----第*5*步-----：确定一次用水事件停顿阈值后，开始划分一次完整事件\n",
    "threshold = pd.Timedelta(minutes=4)#阈值为四分钟\n",
    "d = data[u'发生时间'].diff() > threshold # 相邻时间做差分，比较是否大于阈值（*****）\n",
    "data[u'事件编号'] = d.cumsum() + 1 # 通过累积求和的方式为事件编号（*****）\n",
    "\n",
    "data.to_excel(outputfile)\n",
    "                         "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>发生时间</th>\n",
       "      <th>开关机状态</th>\n",
       "      <th>加热中</th>\n",
       "      <th>保温中</th>\n",
       "      <th>实际温度</th>\n",
       "      <th>热水量</th>\n",
       "      <th>水流量</th>\n",
       "      <th>加热剩余时间</th>\n",
       "      <th>当前设置温度</th>\n",
       "      <th>用水停顿时间间隔</th>\n",
       "      <th>事件编号</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2014-10-19 07:01:56</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>30°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>8</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56</th>\n",
       "      <td>2014-10-19 07:38:16</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>30°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>8</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>36.333333</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>381</th>\n",
       "      <td>2014-10-19 09:46:38</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>29°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>16</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>128.366667</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>382</th>\n",
       "      <td>2014-10-19 09:46:40</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>29°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>13</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>0.033333</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>384</th>\n",
       "      <td>2014-10-19 09:47:15</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>关</td>\n",
       "      <td>29°C</td>\n",
       "      <td>0%</td>\n",
       "      <td>20</td>\n",
       "      <td>0分钟</td>\n",
       "      <td>50°C</td>\n",
       "      <td>0.583333</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   发生时间 开关机状态 加热中 保温中  实际温度 热水量  水流量 加热剩余时间 当前设置温度  \\\n",
       "2   2014-10-19 07:01:56     关   关   关  30°C  0%    8    0分钟   50°C   \n",
       "56  2014-10-19 07:38:16     关   关   关  30°C  0%    8    0分钟   50°C   \n",
       "381 2014-10-19 09:46:38     关   关   关  29°C  0%   16    0分钟   50°C   \n",
       "382 2014-10-19 09:46:40     关   关   关  29°C  0%   13    0分钟   50°C   \n",
       "384 2014-10-19 09:47:15     关   关   关  29°C  0%   20    0分钟   50°C   \n",
       "\n",
       "       用水停顿时间间隔  事件编号  \n",
       "2      0.000000     1  \n",
       "56    36.333333     2  \n",
       "381  128.366667     3  \n",
       "382    0.033333     3  \n",
       "384    0.583333     3  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
